<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /**
         * 编写一个函数来查找字符串数组中的最长公共前缀。
         * 如果不存在公共前缀，返回空字符串 ""。
        */

        // 暴力解法
        function getCommonPrefix (strArr) {
            if (strArr.length === 0) {
                return '';
            }
            if (strArr.length === 1) {
                return strArr[0];
            }
            // ['hello', 'hi', 'halo'] >>>>> [5, 2, 4]
            // Math.min();
            const lengthArr = strArr.map(function (item) {
                return item.length;
            });
            const minLength = Math.min(...lengthArr); // 打散数组求最小值
            let common = '';
            for (let i = 0; i < minLength; i++) {
                let targetLetter = strArr[0][i]; // h, e, l, l, o
                for (const str of strArr) {
                    // hello
                    // hi
                    // halo
                    // i = 0 >>> h
                    const currentLetter = str[i]; // h, h, h
                    if (targetLetter !== currentLetter) {
                        return common;
                    }
                }
                common += targetLetter;
            }
            return common;
        }

        console.log( getCommonPrefix(['hello', 'hi', 'halo']) ); // 'h'
        console.log( getCommonPrefix(["flower","flow","flight"]) ); // 'fl'
        console.log( getCommonPrefix(["dog","racecar","car"]) ); // ''

        // 性能较优
        // function getCommonPrefix (strs) {
        //     const len = strs.length;
        //     if (!len) {
        //         return '';
        //     }
        //     if (len === 1) {
        //         return strs[0];
        //     }

        //     const tgt = strs[0];

        //     let count = 0;

        //     while (true) {
        //         for (let i = 1; i < len; i++) {
        //             const current = strs[i][count];
        //             if (!current || current !== tgt[count]) {
        //                 return !count ? '' : tgt.substr(0, count);
        //             }
        //         }
        //         count++;
        //     }
        // }


    </script>
</body>
</html>